边缘检测Prewitt算子 | 您所在的位置:网站首页 › 边缘检测sobel Roberts prewitt › 边缘检测Prewitt算子 |
Prewitt算子是一种一阶微分算子的边缘检测,利用像素点上下、左右邻点的灰度差,在边缘处达到极值检测边缘,去掉部分伪边缘,对噪声具有平滑作用 。其原理是在图像空间利用两个方向模板与图像进行邻域卷积来完成的,这两个方向模板一个检测水平边缘,一个检测垂直边缘。对比其他边缘检测算子,Perwitt算子对边缘的定位精度不如Roberts算子,实现方法与Sobel算子类似,但是实现的功能差距很大,Sobel算子对边缘检测的准确性更优于Prewitt算子。 对于图像f(x,y),Prewitt边缘检测输出图像G,图像的Prewitt边缘检测算子可由下式确定: 对于输出的最后图像G,可以根据G = max(Gx,Gy)或者G = Gx+Gy得到,凡是灰度新值大于或等于阈值的像素点就认为是边缘点。根据上面的公式可得到Prewitt算子的模板如下: Prewitt边缘检测的代码如下: #include #include "opencv2/imgproc.hpp" #include "opencv2/imgcodecs.hpp" #include "opencv2/highgui.hpp" using namespace std; using namespace cv; void PreWitt(Mat srcImage,Mat& dstImage) { cvtColor(srcImage,srcImage,COLOR_BGR2GRAY); //转换为灰度图像 //转换为浮点类型 srcImage.convertTo(srcImage,CV_32FC1); //x,y方向上的卷积核 Mat maskX = (Mat_(3,3) |
CopyRight 2018-2019 实验室设备网 版权所有 |